import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import router from './router'
import Logger, { LOG_LEVELS } from './utils/logger'

// 设置API地址环境变量 - 使用相对路径，通过代理访问HTTPS后端
window.VUE_APP_API_URL = '/api'

const app = createApp(App)

// 注册所有图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

// 添加一个全局配置来处理ElementPlus的弃用警告
app.config.warnHandler = (msg) => {
  // 过滤掉有关type.text的警告
  if (msg.includes('type.text is about to be deprecated')) {
    return;
  }
  console.warn(msg);
}

// 使用路由和ElementPlus
app.use(router)
app.use(ElementPlus, {
  // 配置Element Plus组件，迁移到新属性
  button: {
    autoInsertSpace: true
  }
})

// 配置日志级别
Logger.setConfig({
  level: process.env.NODE_ENV === 'production' ? LOG_LEVELS.WARN : LOG_LEVELS.INFO,
  showBackupDataLogs: true, // 启用备用数据日志
  showApiLogs: true // 启用API请求日志
})

// 判断是否需要自动登录
import { login } from './api/user'
const token = localStorage.getItem('token')

// 如果没有令牌，尝试自动登录（仅用于开发测试）
if (!token && process.env.NODE_ENV === 'development') {
  // 使用测试账户登录，直接使用后端API
  setTimeout(() => { // 延迟执行，确保API初始化完成
    login({
      username: 'admin',
      password: '123456'
    }).then(response => {
      if (response && response.data && response.data.token) {
        localStorage.setItem('token', `Bearer ${response.data.token}`)
        if (response.data.userInfo) {
          localStorage.setItem('userId', response.data.userInfo.id)
          localStorage.setItem('userInfo', JSON.stringify(response.data.userInfo))
        }
        // 刷新页面以应用新令牌
        setTimeout(() => {
          window.location.reload()
        }, 1000)
      }
    }).catch(() => {
      // 自动登录失败，静默处理
    })
  }, 500) // 延迟500毫秒
}

app.mount('#app')
